package global

import (
	"github.com/spf13/viper"
	"log"
)

var APPLICATION Application

type Application struct {
	AppName    string `ini:"app_name" json:"appName"`
	InstanceId string `ini:"instance_id" json:"instanceId"`
	Mysql      Mysql  `ini:"mysql" json:"mysql"`
	Canal      Canal  `ini:"canal" json:"canal"`
}
type Mysql struct {
	Host     string `ini:"host" json:"host"`
	Port     int    `ini:"port" json:"port"`
	UserName string `ini:"user_name" json:"userName"`
	Password string `ini:"password" json:"password"`
}

type Canal struct {
	Action   string `ini:"action" json:"action"`
	Table    string `ini:"table" json:"table"`
	ServerId int    `ini:"server_id" json:"serverId"`
}

func init() {
	//cfg, err := ini.Load("conf.ini")
	//if err != nil {
	//	log.Fatalln("Fail to parse 'conf.ini'", err)
	//}
	//cfg.MapTo(&APPLICATION)
	// 设置配置文件的名称（不需要扩展名）
	viper.SetConfigName("conf")
	// 设置配置文件的类型
	viper.SetConfigType("json")
	// 设置配置文件的路径（可以设置多个）
	viper.AddConfigPath(".")

	// 读取配置文件
	if err := viper.ReadInConfig(); err != nil {
		log.Fatalf("Error reading config file: %s", err)
	}

	err := viper.Unmarshal(&APPLICATION)
	if err != nil {
		log.Fatalf("Unable to decode config into struct: %v", err)
	}
}
